package ${basePackage}.generator;

import cn.hutool.core.io.FileUtil;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import ${basePackage}.model.DataModel;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

/**
 * 动态代码生成器
 * @author ${author}
 */
public class DynamicGenerator {
    public static void deGenerator(String srcPath, String destPath, Object dataModel) throws IOException, TemplateException {
        // 创建configuration对象并设置版本号
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_32);
        // 设置模板目录位置
        configuration.setDirectoryForTemplateLoading(new File(srcPath).getParentFile());
        // 设置默认编码格式
        configuration.setDefaultEncoding("utf-8");
        // 获取模板对象
        String templateName = new File(srcPath).getName();
        Template template = configuration.getTemplate(templateName);
        // 特殊判断(没有目标文件就新建)
        if (!FileUtil.exist(destPath)) {
            FileUtil.touch(destPath);
        }
        Writer fileWriter = new FileWriter(destPath);
        // 进行生成
        template.process(dataModel, fileWriter);
        // 关闭流
        fileWriter.close();
    }
}
